package com.yupi.springbootinit.statemachine.enums;

/**
 * 权限枚举
 * 基于部门的功能权限定义，简化权限管理
 */
public enum PermissionEnum {
    
    // ========== 系统管理权限 ==========
    /**
     * 系统管理权限 - 管理员专用
     */
    SYSTEM_ADMIN("SYSTEM_ADMIN", "系统管理"),
    
    // ========== 订单管理权限 ==========
    /**
     * 订单创建权限 - 项目部
     */
    ORDER_CREATE("ORDER_CREATE", "订单创建"),
    
    /**
     * 订单查看权限 - 项目部、管理员
     */
    ORDER_VIEW("ORDER_VIEW", "订单查看"),
    
    // ========== 工艺管理权限 ==========
    /**
     * 工艺单创建权限 - 工程部
     */
    PROCESS_CREATE("PROCESS_CREATE", "工艺单创建"),
    
    /**
     * 工艺单发布权限 - 工程部
     */
    PROCESS_PUBLISH("PROCESS_PUBLISH", "工艺单发布"),
    
    // ========== 排期管理权限 ==========
    /**
     * 排期创建权限 - PMC
     */
    SCHEDULE_CREATE("SCHEDULE_CREATE", "排期创建"),
    
    /**
     * 排期调整权限 - PMC
     */
    SCHEDULE_ADJUST("SCHEDULE_ADJUST", "排期调整"),
    
    // ========== 生产管理权限 ==========
    /**
     * 工序执行权限 - 生产部
     */
    PRODUCTION_EXECUTE("PRODUCTION_EXECUTE", "工序执行"),
    
    /**
     * 生产报工权限 - 生产部
     */
    PRODUCTION_REPORT("PRODUCTION_REPORT", "生产报工"),
    
    // ========== 质检管理权限 ==========
    /**
     * 质检执行权限 - 品质部
     */
    QUALITY_EXECUTE("QUALITY_EXECUTE", "质检执行"),
    
    /**
     * 质检判定权限 - 品质部
     */
    QUALITY_JUDGMENT("QUALITY_JUDGMENT", "质检判定");
    
    private final String code;
    private final String description;
    
    PermissionEnum(String code, String description) {
        this.code = code;
        this.description = description;
    }
    
    public String getCode() {
        return code;
    }
    
    public String getDescription() {
        return description;
    }
    
    /**
     * 根据代码获取权限枚举
     */
    public static PermissionEnum getByCode(String code) {
        for (PermissionEnum permission : values()) {
            if (permission.getCode().equals(code)) {
                return permission;
            }
        }
        return null;
    }
}